#include <REGX52.H>

void delay_ms(unsigned int ms)
{
    unsigned int i, j;
    for (i = 0; i < ms; i++)
    {
        for (j = 0; j < 123; j++)
            ;
    }
}

void main()
{
    unsigned char i;
    unsigned char led_state;//灯的状态信息
    
    while(1) {  // 主循环，一直运行
        // 1. 从左到右流水（逐个点亮 P2.0 ~ P2.7 ）
        for(i = 0; i < 8; i++) {
            led_state = 0x01 << i;  // 左移，每次只亮一个灯
            P2 = ~led_state;       // 因为低电平点亮，所以取反
            delay_ms(500);            // 延时，控制流水速度
        }
     // 2. 所有灯全亮（P2 所有引脚置 0 ）
        P2 = 0x00;
        delay_ms(1000);  // 全亮持续时间
        //      7654 3210
        // 0x01 0000 0001
}
}